home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
081-090
/
amok82
/
plot
/
source
/
reqtools.def
< prev
next >
Wrap
Text File
|
1993-11-04
|
16KB
|
439 lines
(* ------------------------------------------------------------------------
:Program. ReqTools
:Contents. Interface to Nico François' reqtools.library
:Author. Kai Bolay [kai] (C-Version by Nico François)
:Address. Hoffmannstraße 168
:Address. D-7250 Leonberg 1 (Germany)
:Address. UUCP: ...!cbmvax!cbmehq!cbmger!depot1!amokle!kai
:Address. FIDO: 2:247/706.3
:History. v1.0 [kai] 22-Nov-91 (translated from C)
:History. v1.0m [Frank Lömker] 24-Feb-92 Umsetzung nach Modula
:Copyright. Freeware
:Language. Modula-2
:Translator. M2Amiga V4.0d
:Remark. Thanks to Nico for his great library
:Bugs. ReqTools/Arq should support each other
:Bugs. Font-Hook: ta.name can contain odd pointer :-(
------------------------------------------------------------------------ *)
(*
** Filename: reqtools.mod
** Release: 1.0
** Revision: 37.3
**
** Modula interface.
**
** (C) Copyright 1991 Nico François
** All Rights Reserved
*)
DEFINITION MODULE ReqTools{"reqtools.library",37};
FROM IntuitionD IMPORT IntuitionBasePtr,WindowPtr,ScreenPtr,NewWindow;
FROM GraphicsD IMPORT GfxBasePtr,TextFontPtr,TextAttr;
FROM DosD IMPORT DosLibraryPtr;
FROM ExecD IMPORT Library,LibraryPtr;
FROM SYSTEM IMPORT ADDRESS,SHORTSET,LONGSET,BPTR;
FROM UtilityD IMPORT HookPtr,TagItem,TagItemPtr,Tag,tagUser;
TYPE STRPTR=ADDRESS;
CONST
ReqToolsName = "reqtools.library";
ReqToolsVersion = 37;
TYPE
ReqToolsBasePtr = POINTER TO ReqToolsBase;
VAR reqToolsVersion:INTEGER;
reqToolsBase:ReqToolsBasePtr;
TYPE
ReqToolsBase = RECORD
libNode: Library;
flags: SHORTSET;
pad: ARRAY [0..2] OF SHORTINT;
segList: BPTR;
(* The following library bases may be read and used by your program *)
intuitionBase: IntuitionBasePtr;
gfxBase: GfxBasePtr;
dosBase: DosLibraryPtr;
(* Next two library bases are only (and always) valid on Kickstart 2.0!
(1.3 version of reqtools also initializes these when run on 2.0) *)
gadToolsBase: LibraryPtr;
utilityBase: LibraryPtr;
END;
CONST
(* types of requesters, for AllocRequestA() *)
TypeFileReq = 0;
TypeReqInfo = 1;
TypeFontReq = 2;
(***********************
* *
* File requester *
* *
***********************)
(* structure _MUST_ be allocated with AllocRequest() *)
TYPE
FileRequesterPtr = POINTER TO FileRequester;
FileRequester = RECORD
reqPos: LONGINT;
leftOffset: INTEGER;
topOffset: INTEGER;
flags: LONGSET;
hook: HookPtr;
dir: STRPTR; (* READ ONLY! Change with ChangeReqAttrA()! *)
matchPat: STRPTR; (* READ ONLY! Change with ChangeReqAttrA()! *)
defaultFont: TextFontPtr;
waitPointer: ADDRESS;
(* Lots of private data follows! HANDS OFF :-) *)
END;
(* returned by FileRequestA() if multiselect is enabled,
free list with FreeFileList() *)
FileListPtr = POINTER TO FileList;
FileList = RECORD
next: FileListPtr;
strLen: LONGINT; (* -1 for directories *)
name: STRPTR;
END;
(***********************
* *
* Font requester *
* *
***********************)
(* structure _MUST_ be allocated with AllocRequest() *)
FontRequesterPtr = POINTER TO FontRequester;
FontRequester = RECORD
reqPos: LONGINT;
leftOffset: INTEGER;
topOffset: INTEGER;
flags: LONGSET;
hook: HookPtr;
attr: TextAttr; (* READ ONLY! *)
defaultFont: TextFontPtr;
waitPointer: ADDRESS;
(* Lots of private data follows! HANDS OFF :-) *)
END;
(***********************
* *
* Requester Info *
* *
***********************)
(* for EZRequestA(), GetLongA(), GetStringA() and PaletteRequestA(),
_MUST_ be allocated with AllocRequest() *)
ReqInfoPtr = POINTER TO ReqInfo;
ReqInfo = RECORD
reqPos: LONGINT;
leftOffset: INTEGER;
topOffset: INTEGER;
width: LONGINT; (* not for EZRequestA() *)
reqTitle: STRPTR; (* currently only for EZRequestA() *)
flags: LONGSET; (* only for EZRequestA() *)
defaultFont: TextFontPtr; (* currently only for PaletteRequestA() *)
waitPointer: ADDRESS;
(* structure may be extended in future *)
END;
(***********************
* *
* Handler Info *
* *
***********************)
(* for ReqHandlerA(), will be allocated for you when you use
the ReqHandler tag, never try to allocate this yourself! *)
HandlerInfoPtr = POINTER TO HandlerInfo;
HandlerInfo = RECORD
private1: LONGINT;
waitMask: LONGSET;
doNotWait: LONGINT (* LONGBOOL *); (* ? *)
(* Private data follows, HANDS OFF :-) *)
END;
(* possible return codes from ReqHandlerA() *)
CONST
CallHandler = 080000000H;
(*************************************
* *
* TAGS *
* *
*************************************)
TagBase = tagUser;
(*** tags understood by most requester functions ***)
(* optional pointer to window *)
Window = TagBase+1;
(* idcmp flags requester should abort on (useful for IDCMP_DISKINSERTED) *)
IDCMPFlags = TagBase+2;
(* position of requester window (see below) - default REQPOS_POINTER *)
ReqPos = TagBase+3;
(* signal mask to wait for abort signal *)
LeftOffset = TagBase+4;
(* topedge offset of requester relative to position specified by ReqPos *)
TopOffset = TagBase+5;
(* name of public screen to put requester on (Kickstart 2.0 only!) *)
PubScrName = TagBase+6;
(* address of screen to put requester on *)
Screen = TagBase+7;
(* tagdata must hold the address of (!) an APTR variable *)
DoReqHandler = TagBase+8;
(* font to use when screen font is rejected, _MUST_ be fixed-width font!
(struct TextFont *, not struct TextAttr *!)
- default GfxBase->DefaultFont *)
DefaultFont = TagBase+9;
(* boolean to set the standard wait pointer in window - default FALSE *)
WaitPointer = TagBase+10;
(*** tags specific to EZRequestA ***
*)
(* title of requester window - default "Request" or "Information" *)
ezReqTitle = TagBase+20;
(* TagBase+21 reserved *)
(* various flags (see below) *)
ezFlags = TagBase+22;
(* default response (activated by pressing RETURN) - default TRUE *)
ezDefaultResponse = TagBase+23;
(*** tags specific to GetLongA ***
*)
(* minimum allowed value - default MININT *)
glMin = TagBase+30;
(* maximum allowed value - default MAXINT *)
glMax = TagBase+31;
(* suggested width of requester window (in pixels) *)
glWidth = TagBase+32;
(* boolean to show the default value - default TRUE *)
glShowDefault = TagBase+33;
(*** tags specific to GetStringA ***
*)
(* suggested width of requester window (in pixels) *)
gsWidth = glWidth;
(* allow empty string to be accepted - default FALSE *)
gsAllowEmpty = TagBase+80;
(*** tags specific to FileRequestA ***
*)
(* various flags (see below) *)
fiFlags = TagBase+40;
(* suggested height of file requester *)
fiHeight = TagBase+41;
(* replacement text for 'Ok' gadget (max 6 chars) *)
fiOkText = TagBase+42;
(*** tags specific to FontRequestA ***
*)
(* various flags (see below) *)
foflags = fiFlags;
(* suggested height of font requester *)
foHeight = fiHeight;
(* replacement text for 'Ok' gadget (max 6 chars) *)
foOkText = fiOkText;
(* suggested height of font sample display - default 24 *)
foSampleHeight= TagBase+60;
(* minimum height of font displayed *)
foMinHeight = TagBase+61;
(* maximum height of font displayed *)
foMaxHeight = TagBase+62;
(* [TagBase+63 to TagBase+66 used below] *)
(*** tags for ChangeReqAttrA ***
*)
(* file requester - set directory *)
fiDir = TagBase+50;
(* file requester - set wildcard pattern *)
fiMatchPat = TagBase+51;
(* file requester - add a file or directory to the buffer *)
fiAddEntry = TagBase+52;
(* file requester - remove a file or directory from the buffer *)
fiRemoveEntry = TagBase+53;
(* font requester - set font name of selected font *)
foFontName = TagBase+63;
(* font requester - set font size *)
foFontHeight = TagBase+64;
(* font requester - set font style *)
foFontStyle = TagBase+65;
(* font requester - set font flags *)
foFontFlags = TagBase+66;
(*** tags for PaletteRequestA ***
*)
(* initially selected color - default 1 *)
paColor = TagBase+70;
(*** tags for ReqHandlerA ***
*)
(* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or
in case of EZRequest to the return value *)
rhEndRequest = TagBase+60;
(*** tags for AllocRequestA ***)
(* no tags defined yet *)
(************
* ReqPos *
************)
ReqPosPointer = 0;
ReqPosCenterWin = 1;
ReqPosCenterScr = 2;
ReqPosTopLeftWin = 3;
ReqPosTopLeftScr = 4;
(******************
* RTRH_EndRequest *
******************)
ReqCancel = 0;
ReqOK = 1;
(***************************************
* flags for RTFI_Flags and RTFO_Flags *
* or filereq->Flags and fontreq->Flags *
***************************************)
fReqNoBuffer = 2;
fReqDoWildFunc = 11;
(*****************************************
* flags for RTFI_Flags or filereq->Flags *
*****************************************)
fReqMultiSelect = 0;
fReqSave = 1;
fReqNoFiles = 3;
fReqPatGad = 4;
fReqSelectDirs = 12;
(*****************************************
* flags for RTFO_Flags or fontreq->Flags *
*****************************************)
fReqFixedWidth = 5;
fReqColorFonts = 6;
fReqChangePalette = 7;
fReqLeavePalette = 8;
fReqScale = 9;
fReqStyle = 10;
(*****************************************
* flags for RTEZ_Flags or reqinfo->Flags *
*****************************************)
ezReqNoReturnKey = 0;
ezReqLamigaQual = 1;
ezReqCenterText = 2;
(********
* hooks *
********)
ReqHookWildFile = 0;
ReqHookWildFont = 1;
PROCEDURE AllocRequestA (type{0}: LONGINT;
tagList{8}: TagItemPtr): ADDRESS; CODE -30;
PROCEDURE AllocRequest (type{0}: LONGINT;
tag1{8}: TagItemPtr): ADDRESS; CODE -30;
PROCEDURE FreeRequest (req{9}: ADDRESS); CODE -36;
PROCEDURE FreeReqBuffer (req{9}: ADDRESS); CODE -42;
PROCEDURE ChangeReqAttrA (req{9}: ADDRESS;
tagList{8}: TagItemPtr); CODE -48;
PROCEDURE ChangeReqAttr (req{9}: ADDRESS;
tag1{8}: TagItemPtr); CODE -48;
PROCEDURE FileRequestA (fileReq{9}: FileRequesterPtr;
(*VAR*) fileName{10}: ADDRESS (*ARRAY OF CHAR*);
title{11}: ADDRESS (*ARRAY OF CHAR*);
tagList{8}: TagItemPtr): BOOLEAN; CODE -54;
PROCEDURE FileRequest (fileReq{9}: FileRequesterPtr;
(*VAR*) fileName{10}: ADDRESS (*ARRAY OF CHAR*);
title{11}: ADDRESS (*ARRAY OF CHAR*);
tag1{8}: TagItemPtr): BOOLEAN; CODE -54;
PROCEDURE FreeFileList (fileList{8}: FileListPtr); CODE -60;
(* Die nächsten 6 Prozeduren können nicht direkt aus Modula benutzt werden,
da sie das Register A4 benötigen. Statt dessen können die Prozeduren aus
ReqToolsSupport benutzt werden. *)
PROCEDURE EZRequestA (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
argarray{12}: ADDRESS;
tagList{8}: TagItemPtr): LONGINT; CODE -66;
PROCEDURE EZRequestTags (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
argarray{12}: ADDRESS;
tag1{8}: TagItemPtr):LONGINT; CODE -66;
PROCEDURE EZRequest (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
tagList{8}: TagItemPtr;
argarray{12}: ADDRESS (*LONGINT*)): LONGINT; CODE -66;
(* Without result.... *)
PROCEDURE vEZRequestA (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
argarray{12}: ADDRESS;
tagList{8}: TagItemPtr); CODE -66;
PROCEDURE vEZRequestTags (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
argarray{12}: ADDRESS;
tag1{8}: TagItemPtr); CODE -66;
PROCEDURE vEZRequest (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
tagList{8}: TagItemPtr;
argarray{12}: ADDRESS (*LONGINT*)); CODE -66;
PROCEDURE GetStringA ((*VAR*) buffer{9}: ADDRESS (*ARRAY OF CHAR*);
maxchars{0}: LONGINT;
title{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
tagList{8}: TagItemPtr): BOOLEAN; CODE -72;
PROCEDURE GetString ((*VAR*) buffer{9}: ADDRESS (*ARRAY OF CHAR*);
maxchars{0}: LONGINT;
title{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
tag1{8}: TagItemPtr): BOOLEAN; CODE -72;
PROCEDURE GetLongA (VAR long{9}: LONGINT; title{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
tagList{8}: TagItemPtr): BOOLEAN; CODE -78;
PROCEDURE GetLong (VAR long{9}: LONGINT; title{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
tag1{8}: TagItemPtr): BOOLEAN; CODE -78;
PROCEDURE FontRequestA (fontReq{9}: FontRequesterPtr;
title{11}: ADDRESS (*ARRAY OF CHAR*);
tagList{8}: TagItemPtr): BOOLEAN ; CODE -96;
PROCEDURE FontRequest (fontReq{9}: FontRequesterPtr;
title{11}: ADDRESS (*ARRAY OF CHAR*);
tag1{8}: TagItemPtr):BOOLEAN ; CODE -96;
PROCEDURE PaletteRequestA (title{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
tagList{8}: TagItemPtr): LONGINT; CODE -102;
PROCEDURE PaletteRequest (title{10}: ADDRESS (*ARRAY OF CHAR*);
reqInfo{11}: ReqInfoPtr;
tag1{8}: TagItemPtr): LONGINT; CODE -102;
PROCEDURE ReqHandlerA (hinfo{9}: HandlerInfoPtr;
sigs{0}: LONGSET;
tagList{8}: TagItemPtr): LONGINT; CODE -108;
PROCEDURE ReqHandler (hinfo{9}: HandlerInfoPtr;
sigs{0}: LONGSET;
tag1{8}: TagItemPtr): LONGINT; CODE -108;
PROCEDURE SetWaitPointer (window{8}: WindowPtr); CODE -114;
PROCEDURE GetVScreenSize (screen{8}: ScreenPtr;
VAR width{9},height{10}: LONGINT); CODE -120;
PROCEDURE SetReqPosition (reqpos{0}: LONGINT;
VAR nw{8}: NewWindow;
screen{9}: ScreenPtr;
window{10}: WindowPtr); CODE -126;
PROCEDURE Spread ((*VAR*) posarray{8}: ADDRESS (*ARRAY OF LONGINT*);
sizearray{9}: ADDRESS (*ARRAY OF LONGINT*);
totalsize{0}, min{1}, max{2}, num{3}: LONGINT); CODE -132;
PROCEDURE ScreenToFrontSafely (screen{8}: ScreenPtr); CODE -138;
END ReqTools.